home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr47 / wasm223.zip / CRC_TP.ASM < prev    next >
Assembly Source File  |  1993-05-04  |  1KB  |  38 lines

  1. ;================================================
  2. ; CRC Generation Subroutine for Turbo Pascal
  3. ;
  4. ; This is a code fragment to update a 16 bit CRC
  5. ; value by one byte.  To use in Turbo Pascal,
  6. ; perform the following steps:
  7. ;
  8. ;   WASM crc_tp
  9. ;   CONVERT pascal < crc_tp.com > temp
  10. ;   DEL crc_tp.com
  11. ;
  12. ; Now the machine code is in text format in the
  13. ; file TEMP.  Use this code as follows:
  14. ;
  15. ;   {$F+}
  16. ;   PROCEDURE CRC16 (VAR crc: Word; data: Byte);
  17. ;   BEGIN
  18. ;     Inline (
  19. ;       { insert the contents of file TEMP here }
  20. ;     );
  21. ;   END.
  22. ;   {$F-}
  23.  
  24. CRCGEN  EQU     1021H   ;xmodem CRC bit pattern
  25.  
  26.         push    ds              ;DS must be saved
  27.         mov     al, [bp+6]      ;load data byte
  28.         lds     bx, [bp+8]      ;load address of CRC value
  29.         mov     dx, [bx]        ;load current CRC value
  30.         mov     cx, 8           ;bits to process
  31. a1      shl     al              ;shift bit into carry
  32.         rcl     dx              ;roll into checksum
  33.         jnc     a2              ;skip xor if bit not shifted out
  34.         xor     dx, CRCGEN      ;xor CRC value
  35. a2      loop    a1              ;loop for each bit in byte
  36.         mov     [bx], dx        ;save CRC value
  37.         pop     ds              ;restore DS
  38.